home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
magic
/
d
/
mtarea.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
5KB
|
116 lines
(*----------------------------------------------------------------------*
* *
* MAGICTOOLS Modula's All purpose GEM Interface Cadre Toolbox *
* ÿ ÿ ÿ ÿ ÿ *
*----------------------------------------------------------------------*
* Version 3.30 02.02.1992 (C)90/91/92 by Peter Hellinger Software *
*----------------------------------------------------------------------*
* Dieses Modul ist urheberrechtlich geschtzt. *
* *
* Die Verffentlichung des Quelltextes oder Teilen daraus, sowie die *
* Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
* oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail- *
* boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen *
* Einverstndnisserklrung des Autors. *
* *
* Die Verbreitung des Moduls als Teil eines gelinkten Programms ist *
* fr Lizenznehmer ausdrcklich erlaubt! Der Autor behlt sich das *
* Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
* widerrufen. *
*----------------------------------------------------------------------*)
(*----------------------------------------------------------------------*
* mtArea Manipulation von Bildschirmbereichen *
* *
* WICHTIG: Rechtecke bestehen PRINZIPIELL aus Koordinate (x, y), *
* Breite (w) und Hhe (h)!!! *
*----------------------------------------------------------------------*)
DEFINITION MODULE mtArea;
FROM MagicSys IMPORT Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
TYPE AREA;
PROCEDURE NewAREA (VAR a: AREA): BOOLEAN;
(* Legt neue AREA-Variable an, FALSE wenn nicht gelungen *)
PROCEDURE DisposeAREA (VAR a: AREA);
(* Gibt die AREA-Variable frei, falls noch Bildspeicher alloziert ist,
* wird dieser ebenfalls freigegeben
*)
PROCEDURE FreeArea (a: AREA);
(* Gibt den allozierten Bildspeicher frei *)
(* hndl = Handle der Workstation, die beim Blitten benutzt werden soll.
* Wichtig fr Clipping! Bisher wurde mtAppl.VDIHandle benutzt,
* was bei eingeschaltetem Clipping fr mtAppl.VDIHandle natrlich
* voll in die Hose geht! Hp 23.10.91
*
*)
PROCEDURE SaveArea (hndl: sINTEGER; a: AREA; rect: ARRAY OF LOC): BOOLEAN;
(* Sichert einen Bildschirmbereich ins RAM. FALSE, wenn nicht gengend
* RAM zur Verfgung stand. Ist bereits ein Bildspeicher alloziert und
* dieser fr das zu sichernde Teilstck zu klein, wird dieser freigegeben
* und ein neues Teilsstck alloziert.
*)
PROCEDURE CopyArea (hndl: sINTEGER; a: AREA; x, y: sINTEGER);
(* Kopiert einen mit SaveArea gespeicherten Bereich an Position x, y *)
PROCEDURE RestoreArea (hndl: sINTEGER; a: AREA);
(* Blittet einen mit SaveArea gespeicherten Bereich wieder auf die
* Originalposition am Schirm
*)
PROCEDURE MoveArea (hndl: sINTEGER; a: AREA; xmove, ymove: sINTEGER;
VAR x, y: sINTEGER);
(* "Bewegt" einen AREA-Bereich um eine Anzahl Pixel. Es wird dabei entlang
* der X- und Y-Achse verschoben. 'xmove' ist die Verschiebung entlang der
* X-Achse (negative Werte verschieben nach LINKS, positive nach RECHTS);
* 'ymove' ist die Verschiebung entlang der Y-Achse (negativ verschiebt
* nach OBEN, positiv nach UNTEN). Diese nderung ermglicht ein viel
* einfacheres Handling durch die Klientmodule mtDials und mtPopups.
* Es wird wie folgend vorgegangen:
*
* MoveArea (handle, area, 0, -5, x, y);
*
* +----------------------------+
* |XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
* +----------------------------+
* | |
* | |
* | |
* | |
* | |
* +----------------------------+
* |############################|
* +----------------------------+
*
* Zuerst wird die alte Bildschirmflche (#) im in Frage kommenden Bereich
* wieder hergestellt. Die gesamte Flche wird intern um 5 Pixel nach unten
* geschoben, die unteren 5 Pixel der Flche (#) gehen dabei verloren.
* Anschlieend wird vom Bildschirm an der aktuellen Position 5 Pixel-Reihen
* in die oberen Pixel der Flche (X) kopiert.
*
* In x,y wird die neue Position des Rechtecks geliefert.
*)
PROCEDURE InitMtArea;
(* Initialisiert das Modul. Wird im Modulkrper ausgefhrt und braucht
* nicht weiter beachtet zu werden.
*)
END mtArea.